package fr.ajicommerce.core.dto;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;


public class CategorieDTO implements Serializable {

	private static final long serialVersionUID = 4328796513589840564L;
	
	private Long idCategorie;
	private String nom;
	private List<CategorieDTO> categoriesDTO = new ArrayList<CategorieDTO>();
	private List<ProduitDTO> produitsDTO = new ArrayList<ProduitDTO>();

	public CategorieDTO() {

	}

		
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((categoriesDTO == null) ? 0 : categoriesDTO.hashCode());
		result = prime * result
				+ ((idCategorie == null) ? 0 : idCategorie.hashCode());
		result = prime * result + ((nom == null) ? 0 : nom.hashCode());
		return result;
	}



	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			
		{		System.out.println("Comparaison Ok :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return true; }
		if (obj == null)
		{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return false; }
		if (getClass() != obj.getClass())
		{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return false; }
		CategorieDTO other = (CategorieDTO) obj;
		if (categoriesDTO == null) {
			if (other.categoriesDTO != null)
			{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
				return false; }
		} else if (!categoriesDTO.equals(other.categoriesDTO))
		{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return false; }
		if (idCategorie == null) {
			if (other.idCategorie != null)
			{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
				return false; }
		} else if (!idCategorie.equals(other.idCategorie))
		{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return false; }
		if (nom == null) {
			if (other.nom != null)
			{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
				return false; }
		} else if (!nom.equals(other.nom))
		{		System.out.println("Comparaison Ko :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
			return false; }
		System.out.println("Comparaison Ok :\n" + this.toString() +"\n" + ((CategorieDTO)obj).toString());
		return true;
	}



	public CategorieDTO(Long idCategorie, String nom, List<CategorieDTO> categoriesDTO,
			List<ProduitDTO> produitsDTO) {
		super();
		this.idCategorie = idCategorie;
		this.nom = nom;
		this.categoriesDTO = categoriesDTO;
		this.produitsDTO = produitsDTO;
	}

	
	public CategorieDTO(String nom, List<CategorieDTO> categoriesDTO,
			List<ProduitDTO> produitsDTO) {
		super();
		this.nom = nom;
		this.categoriesDTO = categoriesDTO;
		this.produitsDTO = produitsDTO;
	}

	public Long getIdCategorie() {
		return idCategorie;
	}

	public void setIdCategorie(Long idCategorie) {
		this.idCategorie = idCategorie;
	}

	public List<CategorieDTO> getCategoriesDTO() {
		return categoriesDTO;
	}

	public void setCategoriesDTO(List<CategorieDTO> categoriesDTO) {
		this.categoriesDTO = categoriesDTO;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public List<ProduitDTO> getProduitsDTO() {
		return produitsDTO;
	}

	public void setProduitsDTO(List<ProduitDTO> produitsDTO) {
		this.produitsDTO = produitsDTO;
	}

	@Override
	public String toString() {
		return "CategorieDTO [idCategorie=" + idCategorie + ", nom=" + nom
				+ ", categories=" + categoriesDTO + ", produits=" + produitsDTO + "]";
	}

}
